package handler

import (
	"github.com/starmotioncf/soutchatinternal"
	"github.com/starmotioncf/soutchatinternal/resp"
	"github.com/starmotioncf/soutchatinternal/service"

	"github.com/gin-gonic/gin"
)

type CountryHandler struct {
	countryService service.CountryService
}

func NewCountryHandler(countryService service.CountryService) *CountryHandler {
	return &CountryHandler{
		countryService: countryService,
	}
}

// GetList 获取所有国家列表
// @Tags 国家
// @Summary  获取所有国家列表，可用的
// @Produce  json
// @Response 200 {object} resp.Resp{data=[]dto.CountryItem}
// @Router /country [get]
// @Security Bearer
func (h *CountryHandler) GetList(ctx *gin.Context) {
	data, err := h.countryService.GetList(ctx, 0)
	resp.ReturnMustArr(ctx, data, err)
}

// GetListByRegion 获取分区国家列表
// @Tags 国家
// @Summary  获取国家列表，只取对应分区的
// @Description  获取国家列表，只取对应分区的,所以一定强制登陆，否则返回空
// @Produce  json
// @Response 200 {object} resp.Resp{data=[]dto.CountryItem}
// @Router /region/country [get]
// @Security Bearer
func (h *CountryHandler) GetListByRegion(ctx *gin.Context) {
	rgn := internal.GetRegionFromCtx(ctx)
	if rgn == 0 {
		resp.ReturnMustArr(ctx, nil, nil)
	}
	data, err := h.countryService.GetList(ctx, rgn)
	resp.ReturnMustArr(ctx, data, err)
}
